#include "Year.h"

class Date
{
private:
	Day day;
	Month month;
	Year year;
public:
	Date(){}

	Date(Day day, Month month, Year year)
	{
		//Require(Day > 0 &&  Day < 31)
		//Require(Month > 0 && Month < 12)
		//Require(Year > 0 && Year < 1900)
		this->day = day;
		this->month = month;
		this->year = year;
		//Ensure (this->Day == Day)
		//Ensure (this->Month == Month)
		//Ensure (this->Year == Year)

	}

	void ChangeDate(Day day, Month month, Year year)
	{
	
		//Require(Day > 0 &&  Day < 31)
		//Require(Month > 0 && Month < 12)
		//Require(Year > 0 && Year < 1900)
		this->day = day;
		this->month = month;
		this->year = year;
		//Ensure (this->Day == Day)
		//Ensure (this->Month == Month)
		//Ensure (this->Year == Year)
	}

	Day getDay()
	{
		return day;
	}

	void setDay(Day day)
	{
		//Require(Day > 0 &&  Day < 31)
		this->day = day;
		//Ensure (this->Day == Day)

	}
	
	Month getMonth()
	{
		return month;
	}

	void setMonth(Month month)
	{		
		//Require(Month > 0 && Month < 12)
		this->month = month;		
		//Ensure (this->Month == Month)

	}

	Year getYear()
	{
		return year;
	}

	void setYear(Year year)
	{
		//Require(Year > 0 && Year < 1900)
		this->year = year;
		//Ensure (this->Day == Day)
	}

	int getYearNumber()
	{
		return year.getYear() ;
	}

	string getMonthName()
	{
		return month.getMonthName();
	}

	int getDayNumber()
	{
		return day.getNumberInMonth();
	}

	string getDateFormat()
	{
		string temp = NULL;

		temp += getDayNumber();
		temp += " \\ " ;
		temp += getMonthName() ;
		temp += " \\ " ;
		temp += getYearNumber();

		return  temp ;
	}

	~Date(){}

}